package app.pumpkin.com.myandroiddemo.algorithm;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import java.util.Arrays;

import app.pumpkin.com.myandroiddemo.R;

/**
 * @author wangshy
 */
public class AlgorithmActivity extends AppCompatActivity {
    private TextView algorithmTextView;
    private int[] dataInt = new int[]{23, 30, 340, 630, 290, 3540, 10, 600, 240, 640, 250};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_algorithm);
        algorithmTextView = findViewById(R.id.algorithmTextView);
        findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                bubblesort(dataInt);
            }
        });
    }

    private void bubblesort(int[] arr) {
        StringBuilder buffer = new StringBuilder();
        buffer.append("排序前数据为:")
                .append(Arrays.toString(arr))
                .append("\n\n");
        algorithmTextView.setText(buffer.toString());
//        boolean isFlag = false;
        //临时存放值
        int temp;
        //表示趟数，一共arr.length-1次。
        for (int i = 0; i < arr.length - 1; i++) {
            //开始新的一轮排序
//            isFlag = false;
            buffer.append("第")
                    .append(i)
                    .append("次排序：");
            for (int j = arr.length - 1; j > i; j--) {
                if (arr[j] < arr[j - 1]) {
                    temp = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = temp;
                    //如果有位置交换那么 就改变值
//                    isFlag = true;
                }
            }
            buffer.append(Arrays.toString(arr)).append("\n\n");
            //如果此时isFlag 仍然为false 说明 并没有发生位置改变
//            if (!isFlag) {
//                buffer.append("排序位置并没有发生改变节省了：")
//                        .append(arr.length - 1 - i)
//                        .append("次排序")
//                        .append("\n\n");
//                break;
//            }
        }
        algorithmTextView.setText(buffer.toString());
    }


}
